<!DOCTYPE html>
<!--
     SPDX-License-Identifier: CC-BY-SA-4.0
     SPDX-FileCopyrightText: 2020 seL4 Project a Series of LF Projects, LLC.
-->
<!-- Page last generated 2025-02-20 03:16:15 +0000 -->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>libsel4vm & libsel4vmmplatsupport API documentation | seL4 docs</title>

    <!-- Our stylesheet and theme stylesheet.  Contains bootstrap. -->
    <link rel="stylesheet" href="/assets/css/style.css" type="text/css">
    <!-- Font awesome -->
    <link href="https://use.fontawesome.com/releases/v5.0.8/css/all.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
    <!-- Pygments syntax highlighting  -->
    <link rel="stylesheet" href="/assets/css/highlighting/trac.css" type="text/css">
    <link rel="icon" type="image/x-icon" href="/assets/favicon.ico"><script defer data-domain="docs.sel4.systems"
	    src="https://analytics.sel4.systems/js/script.js"></script></head>

  <body class="container-fluid">

    



<header>
  <ul class="row menu">
    <li class="col-xs-12 col-md-2" >
            <a href="https://sel4.systems" class="skip-icon">
              <img class="img-responsive" src="/assets/logo-text-white.svg" alt="seL4 logo" />
            </a>
    </li>
    <li class="col-xs-12 col-md-10 menu">
      <nav aria-label="Banner links">
        <h2><a href="/Resources" />Resources</h2>
        <h2><a href="/processes" />Contributing</a></h2>
        <h2><a href="/projects" />Projects</h2>
        <h2><a href="/Tutorials" />Tutorials</h2>
        <iframe title="DuckDuckGo search bar" src="https://duckduckgo.com/search.html?site=docs.sel4.systems&prefill=Search%20sel4.systems" style="overflow:hidden;margin-bottom:10px; padding:0;height:40px;float:right;border-width: 0px"></iframe>
      </nav>
    </li>
  </ul>
  <div class="clear"></div>
  
<div class="breadcrumbs bootstrap hidden-sm-down">
  <nav class="sel-breadcrumb" aria-label="Breadcrumb" >
    <ol class=" list-unstyled" vocab="http://schema.org/" typeof="BreadcrumbList">
      
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/">
              <span property="name"><b>seL4 Docs</b></span>
            </a>
            <meta property="position" content="1" />
        </li>
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/projects/">
              <span property="name"><b>Projects</b></span>
            </a>
            <meta property="position" content="2" />
        </li>
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/projects/virtualization/">
              <span property="name"><b>Virtualisation on seL4</b></span>
            </a>
            <meta property="position" content="3" />
        </li>
      
        

        
          <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <span property="name">libsel4vm & libsel4vmmplatsupport API documentation</span>
            <meta property="position" content="4" /></li>
          
    </ol>
  </nav>
  <nav class="sel-version" aria-label="Current Versions">
    <ol class="list-unstyled">
      <li class="list-unstyled text-right" style="margin-left:auto; padding:0rem 0rem;">
        Current versions:</li>
      <li class="list-unstyled text-right">
      <a href="/releases/sel4/13.0.0"><b>seL4-13.0.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/microkit/1.4.1"><b>microkit-1.4.1</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/camkes/camkes-3.11.0"><b>camkes-3.11.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/capdl/0.3.0"><b>capDL-0.3.0</b></a></li>
      </ol>
  </nav>
  <div class='clear'></div>
</div>


</header>

    <main>
      <div class="row">
  <div class="hidden-xs col-sm-4 col-md-3 col-lg-2">
    


<div class="sidebar">















    <ul class="nav nav-sidebar">
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4/">seL4</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/l4v/">L4.verified</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/camkes/">CAmkES</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/capdl/">CapDL</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/elfloader/">Elfloader</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/buildsystem/">seL4 Buildsystem</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/user_libs/">user_libs</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4runtime/">The seL4 run-time</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4webserver/">seL4webserver</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4-tutorials/">seL4 tutorials</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4bench/">sel4bench</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4test/">seL4Test</a>
        </li>
  
    
    

    
        <li class="active">
            <a class="" href="/projects/virtualization/">Virtualization</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/camkes-vm/">camkes-vm</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/dockerfiles/">Dockerfiles</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/docsite/">seL4 Documentation website</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4_tools/">seL4_tools</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/microkit/">Microkit</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/hardware_hacks/">Hardware Hacks</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/rust/">Rust</a>
        </li>
  
    </ul>


</div>

  </div>
  <div class="content col-sm-8 col-md-6 col-lg-7 main">
    <h1 id="libsel4vm-api">libsel4vm API</h1>

<p>See below for usage documentation on various libsel4vm interfaces:</p>

<h3 id="common-interfaces">Common Interfaces</h3>
<ul>
  <li><a href="api/libsel4vm_boot">sel4vm/boot.h</a>: An interface for creating, initialising and configuring VM instances</li>
  <li><a href="api/libsel4vm_guest_irq_controller">sel4vm/guest_irq_controller.h</a>: Abstractions around initialising a guest VM IRQ controller</li>
  <li><a href="api/libsel4vm_guest_memory_helpers">sel4vm/guest_memory_helpers.h</a>: Helpers for using the guest memory interface</li>
  <li><a href="api/libsel4vm_guest_vcpu_fault">sel4vm/guest_vcpu_fault.h</a>: Useful methods to query and configure vcpu objects that have faulted during execution</li>
  <li><a href="api/libsel4vm_guest_vm">sel4vm/guest_vm.h</a>: Provides base definitions of the guest vm datastructure and primitives to run the VM instance</li>
  <li><a href="api/libsel4vm_guest_iospace">sel4vm/guest_iospace.h</a>:  Enables the registration and management of a guest VM’s IO Space</li>
  <li><a href="api/libsel4vm_guest_memory">sel4vm/guest_memory.h</a>: Useful abstractions to manage your guest VM’s physical address space</li>
  <li><a href="api/libsel4vm_guest_ram">sel4vm/guest_ram.h</a>: A set of methods to manage, register, allocate and copy to/from a guest VM’s RAM</li>
  <li><a href="api/libsel4vm_guest_vm_util">sel4vm/guest_vm_util.h</a>: A set of utilties to query a guest vm instance</li>
</ul>

<h3 id="architecture-specific-interfaces">Architecture Specific Interfaces</h3>

<h4 id="arm">ARM</h4>
<ul>
  <li><a href="api/libsel4vm_guest_arm_context">sel4vm/arch/guest_arm_context.h</a>: Provides a set of useful getters and setters on ARM vcpu thread contexts</li>
  <li><a href="api/libsel4vm_arm_guest_vm">sel4vm/arch/guest_vm_arch.h</a>: Provide definitions of the arm guest vm datastructures and primitives to configure the VM instance</li>
</ul>

<h4 id="x86">X86</h4>
<ul>
  <li><a href="api/libsel4vm_guest_x86_context">sel4vm/arch/guest_x86_context.h</a>: Provides a set of useful getters and setters on x86 vcpu thread contexts</li>
  <li><a href="api/libsel4vm_x86_guest_vm">sel4vm/arch/guest_vm_arch.h</a>: Provide definitions of the x86 guest vm datastructures and primitives to configure the VM instance</li>
  <li><a href="api/libsel4vm_x86_vmcall">sel4vm/arch/vmcall.h</a>: Methods for registering and managing vmcall instruction handlers</li>
  <li><a href="api/libsel4vm_x86_ioports">sel4vm/arch/ioports.h</a>: Abstractions for initialising, registering and handling ioport events</li>
</ul>

<h1 id="libsel4vmmplatsupport-api">libsel4vmmplatsupport API</h1>

<p>See below for usage documentation on various libsel4vmmplatsupport interfaces:</p>

<h3 id="common-interfaces-1">Common Interfaces</h3>
<ul>
  <li><a href="api/libsel4vmmplatsupport_device">sel4vmmplatsupport/device.h</a>: Provides a series of datastructures and helpers to manage VMM devices.</li>
  <li><a href="api/libsel4vmmplatsupport_device_utils">sel4vmmplatsupport/device_utils.h</a>: Provides various helpers to establish different types devices for a given VM instance</li>
  <li><a href="api/libsel4vmmplatsupport_guest_image">sel4vmmplatsupport/guest_image.h</a>: Provides general utilites to load guest vm images (e.g. kernel, initrd, modules)</li>
  <li><a href="api/libsel4vmmplatsupport_guest_memory_util">sel4vmmplatsupport/guest_memory_util.h</a>: Provides various utilities and helpers for using the libsel4vm guest memory interface</li>
  <li><a href="api/libsel4vmmplatsupport_guest_vcpu_util">sel4vmmplatsupport/guest_vcpu_util.h</a>: Provides abstractions and helpers for managing libsel4vm vcpus</li>
  <li><a href="api/libsel4vmmplatsupport_ioports">sel4vmmplatsupport/ioports.h</a>: Useful abstraction for initialising, registering and handling ioport events for a guest VM instance</li>
  <li><a href="api/libsel4vmmplatsupport_cross_vm_connection">sel4vmmplatsupport/drivers/cross_vm_connection.h</a>: Facilitates the creation of communication channels between VM’s and other components on a seL4-based system</li>
  <li><a href="api/libsel4vmmplatsupport_pci">sel4vmmplatsupport/drivers/pci.h</a>: Interface presents a VMM PCI Driver, which manages the host’s PCI devices, and handles guest OS PCI config space read &amp; writes</li>
  <li><a href="api/libsel4vmmplatsupport_pci_helper">sel4vmmplatsupport/drivers/pci_helper.h</a>: This interface presents a series of helpers when using the VMM PCI Driver</li>
  <li><a href="api/libsel4vmmplatsupport_virtio_con">sel4vmmplatsupport/drivers/virtio_con.h</a>: This interface provides the ability to initalise a VMM virtio console driver</li>
  <li><a href="api/libsel4vmmplatsupport_virtio_net">sel4vmmplatsupport/drivers/virtio_net.h</a>: This interface provides the ability to initalise a VMM virtio net driver</li>
</ul>

<h3 id="architecture-specific-interfaces-1">Architecture Specific Interfaces</h3>

<h4 id="arm-1">ARM</h4>
<ul>
  <li><a href="api/libsel4vmmplatsupport_arm_generic_forward_device">sel4vmmplatsupport/arch/generic_forward_device.h</a>: This interface facilitates the creation of a virtual device used for dispatching faults to external handlers</li>
  <li><a href="api/libsel4vmmplatsupport_arm_guest_boot_init">sel4vmmplatsupport/arch/guest_boot_init.h</a>: Provides helpers to initialise the booting state of a VM instance</li>
  <li><a href="api/libsel4vmmplatsupport_arm_guest_reboot">sel4vmmplatsupport/arch/guest_reboot,h</a>: Provides a series of helpers for registering callbacks when rebooting the VMM</li>
  <li><a href="api/libsel4vmmplatsupport_arm_guest_vcpu_fault">sel4vmmplatsupport/arch/guest_vcpu_fault.h</a>: Provides a module for registering and processing ARM vcpu faults</li>
  <li><a href="api/libsel4vmmplatsupport_arm_guest_vcpu_util">sel4vmmplatsupport/arch/guest_vcpu_util.h</a>: Provides abstractions and helpers for managing libsel4vm vcpus on an ARM platform</li>
  <li><a href="api/libsel4vmmplatsupport_arm_vpci">sel4vmmplatsupport/arch/vpci.h</a>: Presents a Virtual PCI driver for ARM-based VM’s</li>
  <li><a href="api/libsel4vmmplatsupport_arm_vusb">sel4vmmplatsupport/arch/vusb.h</a>: Presents a Virtual USB driver for ARM-based VM’s</li>
  <li><a href="api/libsel4vmmplatsupport_arm_ac_device">sel4vmmplatsupport/arch/ac_device.h</a>: Facilitates the creation of generic virtual devices in a VM instance with access control permissions over the devices addressable memory</li>
</ul>

<h4 id="x86-1">X86</h4>
<ul>
  <li><a href="api/libsel4vmmplatsupport_x86_acpi">sel4vmmplatsupport/arch/acpi.h</a>: Provides support for generating ACPI table in a guest x86 VM</li>
  <li><a href="api/libsel4vmmplatsupport_x86_guest_boot_init">sel4vmmplatsupport/arch/guest_boot_init.h</a>: Provides helpers to initialise the booting state of a VM instance</li>
  <li><a href="api/libsel4vmmplatsupport_x86_vmm_pci_helper">sel4vmmplatsupport/arch/drivers/vmm_pci_helper.h</a>: Interface presents a series of helpers for establishing VMM PCI support on x86 platforms</li>
</ul>

  </div>







  
  
<div class="sidebar-toc hidden-xs hidden-sm col-md-3 col-lg-3">
  
    <ul class="section-nav">
    	<h2> Virtualization </h2> 
        <li>
          
          <a style="" class="" href="/projects/virtualization/">
            Documentation homepage
          </a>
        </li>

















    
        <h3>Repositories</h3>
    
        <li>
          <a class="" href="https://github.com/seL4proj/seL4_projects_libs">
            seL4_projects_libs
          </a>
        </li>









  







    </ul>

</div>


</div>

    </main>
    


<footer class="site-footer">

  <h2 class="footer-heading">seL4 docs</h2>

  <div class="footer-col-wrapper">

    <div class="col-md-2">
      



<ul class="social-media-list">
  <li><a href="https://github.com/sel4"><i class="fab fa-github"></i> <span class="username">sel4</span></a></li><li><a href="https://github.com/sel4proj"><i class="fab fa-github"></i> <span class="username">sel4proj</span></a></li>
</ul>

    </div>

    <div class="col-md-8">
      <ul class="list-unstyled">
        <li>
          This site is for displaying seL4 related documentation.  Pull requests are welcome.
        </li>
        
          <li>
            Site last updated: Fri Feb 7 10:17:38 2025 +1100 ee78c8857c
          </li>
          <li>
                Page last updated: Mon Nov 30 09:25:37 2020 +1100 977ed44f17
          </li>
        
      </ul>
    </div>
    <div class="col-md-2">
<a href="https://github.com/seL4/docs/blob/master/projects/virtualization/docs/index.md">View page on GitHub</a>
      <br />
      <a href="https://github.com/seL4/docs/edit/master/projects/virtualization/docs/index.md">Edit page on GitHub</a>
      <br />
      <a href="/sitemap">Sitemap</a>
    </div>

  </div>

</footer>

  </body>
</html>
